The final exam will be a comprehensive exam with any course topic potentially being the basis for a question. It will be a two hour long exam with most likely around 100 points worth of questions. Similar to the in-class exams, there will be two types of questions:
Short answer style questions. For these questions, you will need to write a few sentences for the answer.
Process or design activity questions. These questions will be larger questions that require you to carry out an activity that is similar to one you did as exercises or term project activities. Based on a scenario or system description, these questions may ask you to create user stories, acceptance criteria, a class decomposition, statechart to define state-based behavior, or sequence diagram to show how a feature flows through a system, to name a few possible activities.
Below are broad topic areas covered by the Final Exam. Refer to the Learning Outcomes listed on the individual course topic pages for more details about what you should know in each topic area.
Information Sheet
You will be able to bring one 8.5" x 11" inch sheet of paper to the exam with whatever information you would like. This can contain information on both sides and be either handwritten or word processed.
The purpose of the exam is for you to demonstrate your understanding of the course topics that are in the scope of the exam. Your instructor knows the material that is in the course resources and the lectures done in class. Verbatim copying of that material would only demonstrate that you can memorize or accurately copy words. You will not be demonstrating your understanding of the topic and you will receive a low score on the question.
If you decide to use an information sheet, you should make sure to write the information on these software engineering topics in your own words. If your instructor asked you to explain a topic in person, it is doubtful that you would give a rote reply directly from the lecture or the course topic readings or videos. This is the information that you should place on an information sheet. Additionally, many of the questions will ask for you to explain why something is important, or exactly how it is carried out. This goes well beyond the information in the lecture or resource materials.
Design
Appreciation for Software architecture: why is it important, what does it provide for you?
Responsibilities of tiers in MVVM architecture
Domain Analysis and Modeling: its purpose, notations and guidelines for models, and creating one from a system description.
Object-oriented design: explain the design principles-single responsibility, dependency inversion/injection, coupling, cohesion, information expert, Law of Demeter, Pure Fabrication, Open/Close, Controller; identify when the principles are not followed and suggest improvements.
Feature design using sequence diagrams
Unit testing principles and practices
Usability: quality attributes and best practices. Their differences, uses and applicability.
Process
Appreciation for process
Purpose of each of the OpenUP process phases (Inception, Elaboration, Construction, Transition) and how practices that you did supported those purposes
Requirements gathering and analysis
The Scrum practices that served as the basis for your tactical process activities
What is the goal for each practice?
What are the basic steps for performing the practice?
What are errors a team may do when performing the practice, and how can you correct them?